#include "ipemon.h"

int id_count = 1;
int t;

Ipemon generate_ipemon() {

	srand(++t);

	Ipemon ipemon;
	
	ipemon.identifiant = id_count++;
	ipemon.espece = rand() % 100;
	ipemon.vie_cur = (rand() % 21) + 30;
	ipemon.vie_max = rand() % 51;
	ipemon.experience = rand() % 5;
	ipemon.rapidite = rand() % 10;
	
	Competence comp_defense;
	Competence comp_attaque;

	comp_attaque.feu = rand()%11;
	comp_attaque.eau = rand()%11;
	comp_attaque.electric = rand()%11;
	comp_attaque.plante = rand()%11;
	comp_attaque.air = rand()%11;
	comp_attaque.pierre = rand()%11;

	comp_defense.feu = comp_attaque.eau;
	comp_defense.eau = comp_attaque.feu;
	comp_defense.electric = comp_attaque.plante;
	comp_defense.plante = comp_attaque.electric;
	comp_defense.air = comp_attaque.pierre;
	comp_defense.pierre = comp_attaque.air;


	ipemon.defense = comp_defense;
	ipemon.attaque = comp_attaque;

	return ipemon;

}

void display_ipemon(Ipemon ipemon) {
	
	printf("Ipemon: %d\n", ipemon.identifiant);
	printf("Espece: %d\n", ipemon.espece);
	printf("Vie courrant: %d\n", ipemon.vie_cur);
	printf("Vie max: %d\n", ipemon.vie_max);
	printf("Experience: %d\n", ipemon.experience);
	printf("Rapidite: %d\n", ipemon.rapidite);
	printf("Attaque: %dF, %dE, %dX, %dP, %dA, %dT\n", ipemon.attaque.feu, 
			ipemon.attaque.eau, ipemon.attaque.electric, 
			ipemon.attaque.plante, ipemon.attaque.air, ipemon.attaque.pierre);
	printf("Defense: %dF, %dE, %dX, %dP, %dA, %dT\n", ipemon.defense.feu, 
			ipemon.defense.eau, ipemon.defense.electric, 
			ipemon.defense.plante, ipemon.defense.air, ipemon.defense.pierre);

}

void ipemon_stream(char *str, Ipemon ipemon) {
	
	char buf[5];

	str[0] = '\n';

	sprintf(buf, "%d", ipemon.identifiant);
	strcpy(str, buf);

	sprintf(buf, "%d", ipemon.espece);
	strcat(str, ":");
	strcat(str, buf);
	
	sprintf(buf, "%d", ipemon.vie_cur);
	strcat(str, ":");
	strcat(str, buf);

	sprintf(buf, "%d", ipemon.vie_max);
	strcat(str, ":");
	strcat(str, buf);
	
	sprintf(buf, "%d", ipemon.experience);
	strcat(str, ":");
	strcat(str,buf);

	sprintf(buf, "%d", ipemon.rapidite);
	strcat(str, ":");
	strcat(str,buf);

	sprintf(buf, "%d", ipemon.attaque.feu);
	strcat(str, ":(");
	strcat(str,buf);

	sprintf(buf, "%d", ipemon.attaque.eau);
	strcat(str, ":");
	strcat(str,buf);

	sprintf(buf, "%d", ipemon.attaque.electric);
	strcat(str, ":");
	strcat(str,buf);

	sprintf(buf, "%d", ipemon.attaque.plante);
	strcat(str, ":");
	strcat(str,buf);

	sprintf(buf, "%d", ipemon.attaque.air);
	strcat(str, ":");
	strcat(str,buf);

	sprintf(buf, "%d", ipemon.attaque.pierre);
	strcat(str, ":");
	strcat(str,buf);

	sprintf(buf, "%d", ipemon.defense.feu);
	strcat(str, "):(");
	strcat(str,buf);

	sprintf(buf, "%d", ipemon.defense.eau);
	strcat(str, ":");
	strcat(str,buf);

	sprintf(buf, "%d", ipemon.defense.electric);
	strcat(str, ":");
	strcat(str,buf);

	sprintf(buf, "%d", ipemon.defense.plante);
	strcat(str, ":");
	strcat(str,buf);

	sprintf(buf, "%d", ipemon.defense.air);
	strcat(str, ":");
	strcat(str,buf);

	sprintf(buf, "%d", ipemon.defense.pierre);
	strcat(str, ":");
	strcat(str,buf);

	strcat(str, ")");
	
}



int main() {
	
	t = (int)time(NULL);
	int i;
	for(i=0; i<10; i++) {

	    Ipemon ipemon = generate_ipemon();

	    char stream[65];
	    ipemon_stream(stream, ipemon);
	    printf("%s\n", stream);

	}


	return 0;
}
